using System;
using System.Collections.Generic;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
using System.Diagnostics;

namespace Dida
{
	internal class TraitProperty
	{
		private PropertyInfo propInfo;

		public TraitProperty(PropertyInfo propInfo)
		{
			this.propInfo = propInfo;
		}

		public PropertyInfo PropertyInfo
		{
			get { return propInfo; }
		}

		public bool Validate(TraitClassBuilder.ErrorList errors)
		{
			if (propInfo.GetGetMethod() == null ||
				propInfo.GetSetMethod() != null)
			{
				throw new NotImplementedException();
			}

			return true;
		}
	}

	public class TraitPropertyInfo
	{
		private string name;
		private Type type;

		public TraitPropertyInfo(string name, Type type)
		{
			this.name = name;
			this.type = type;
		}

		public string Name
		{
			get { return name; }
		}

		public Type Type
		{
			get { return type; }
		}
	}
}